import { reqbannerList, reqBaseCategoryList, reqfloorsList, reqSearchList } from "@/api/index"

const state = {
  CategoryList: [],
  banner: [],
  floorsList: [],
  searchData: {},
}

const actions = {
  //三级导航请求数据
  async getCategoryListData({ commit }) {
    // console.log(123)
    const result = await reqBaseCategoryList()
    //   if (result.code === 200) {
    //     console.log("请求成功了", result.data)
    //   } else {
    //     console.log(result.message)
    //   }
    // 由于在异步执行后需要在提交到同步执行mutations中,然后在将数据存入状态status.
    commit("GET_GATEGORY_LIST_DATA", result)
  },

  // mock请求banner轮播图数据
  async getbannerListData({ commit }) {
    // console.log(123)
    const result = await reqbannerList()
    // console.log("getbanner", result)
    //   if (result.code === 200) {
    // console.log("请求成功了", result.data)
    //   } else {
    //     console.log(result.message)
    //   }
    // 由于在异步执行后需要在提交到同步执行mutations中,然后在将数据存入状态status.
    commit("GET_BANNER_LIST_DATA", result)
    // console.log(123)
  },

  // mock请求floors数据
  async getFloorsListData(abc) {
    const result = await reqfloorsList()
    // 判断,如果成功则将数据存到store模块home的state中,如果失败,则弹出提示
    if (result.code === 200) {
      // 如果在形参中,没有将commit解构,则需要使用.commit,来将完成后的异步任务提交到mutations中,在有mutations来将数据存入或修改到store中的home模块的state中
      // 注意由actions到mutations中提交数据的方法一般都是大写,如果字母较多,则可以使用下划线来拼接,可读性更好
      abc.commit("GET_FLOORS_LIST_DATA", result)
    }
  },
}

const mutations = {
  //三级导航数据
  GET_GATEGORY_LIST_DATA(status, result) {
    status.CategoryList = result.data
  },
  // banner轮播图数据
  GET_BANNER_LIST_DATA(status, result) {
    // console.log(123)
    status.banner = result.data
  },

  // floors轮播图的数据
  // 注意:在mutations在中,函数的第一个形参都是status,有且只有第二个形参,如果参数较多,可以将参数以对象的形式,来传入  !!!且第二个参数一般为payload
  GET_FLOORS_LIST_DATA(status, payload) {
    status.floorsList = payload.data
  },
}

// 导出对象
export default {
  namespaced: true, // 既然是分模块进行开发了,一定要开启命名空间
  state,
  actions,
  mutations,
}
